/*
 * Copyright 2006 FXCM LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package fxts.stations.util.preferences;

import fxts.stations.util.ResourceManager;
import fxts.stations.util.UserPreferences;

public class PrefProperty {
    /* -- Data members -- */
    private String mPropertyID;
    private String mNameResID;
    private APropertyType mType;
    private Object mValue;
    private boolean mDirty;
    /**
     * Resource manager.
     */
    private ResourceManager mResMan;

    /* Constructor */
    public PrefProperty(String aPropertyID, String aNameResID, APropertyType aType, Object aValue) {
        try {
            mResMan = ResourceManager.getManager("fxts.stations.util.preferences.resources.Resources");
        } catch (Exception e) {
            e.printStackTrace();
        }
        mPropertyID = aPropertyID;
        mNameResID = aNameResID;
        mType = aType;
        mValue = aValue;
    }

    public void resetValue(UserPreferences aPref) {
        mValue = aPref.getValue(mPropertyID, mValue);
    }

    public String getPropertyID() {
        return mPropertyID;
    }

    public String getName() {
        return mResMan.getString(mNameResID, mPropertyID);
    }

    public APropertyType getType() {
        return mType;
    }

    public String toString() {
        return mType.toString(mValue);
    }

    public void set(Object aParam) {
        mValue = aParam;
    }

    public Object getValue() {
        return mValue;
    }

    protected boolean isDirty() {
        return mDirty;
    }

    protected void setDirty(boolean aDirty) {
        mDirty = aDirty;
    }
}
